﻿using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;

namespace EP.Core
{
    public class EnginContext
    {
        private static IEngine _engine;
        // 该方法一次性只能在一个线程上执行。 静态方法在类型上锁定，而实例方法在实例上锁定。 
        // 只有一个线程可在任意实例函数中执行，且只有一个线程可在任意类的静态函数中执行。
        [MethodImpl(MethodImplOptions.Synchronized)]
        public static IEngine Initialize(IEngine engine)
        {
            if (_engine == null)
                _engine = engine;
            return _engine;
        }
        /// <summary>
        /// 当前引擎
        /// </summary>
        public static IEngine Current
        {
            get
            {
                return _engine;
            }
        }
    }

}
